import roleMenuMapper from "../../mappers/user/roleMenuMapper.js";

/**
 * @description 创建角色菜单关系
 * @param {Object} roleMenuData - 角色菜单关系数据
 * @returns {Promise<string|null>} 返回错误信息或 null
 */
const createRoleMenu = async (roleMenuData) => {
    const existingRelation = await roleMenuMapper.existingRelation(roleMenuData);
    if (existingRelation.length > 0) {
        return '角色菜单关系已存在';
    }
    await roleMenuMapper.createRoleMenu(roleMenuData);
    return null;
};

/**
 * @description 获取指定角色的菜单关系
 * @param {number} roleId - 角色 ID
 * @returns {Promise<Array|null>} 返回角色菜单关系列表或 null
 */
const getRoleMenuByRoleId = async (roleId) => {
    return await roleMenuMapper.getRoleMenuByRoleId(roleId);
};

/**
 * @description 逻辑删除角色菜单关系
 * @param {number} roleMenuId - 角色菜单关系 ID
 * @returns {Promise<null>} 返回 null
 */
const deleteRoleMenu = async (roleMenuId) => {
    await roleMenuMapper.deleteRoleMenu(roleMenuId);
    return null;
};

/**
 * @description 获取所有用户、角色及菜单的关联信息
 * @param {number} userId - 用户 ID
 * @returns {Promise<Object[]>} 包含用户、角色、菜单关联信息的数组
 */
const getAllUserRoleRoleMenu = async (userId) => {
    return await roleMenuMapper.getAllUserRoleRoleMenu(userId)
};


export default {createRoleMenu, getRoleMenuByRoleId, deleteRoleMenu, getAllUserRoleRoleMenu};
